package com.kgc.sbt.service;

/**
 * Created on 2021-06-19.
 * <p>
 * Author: zhukang
 * <p>
 * Description: 抢购业务接口
 */
public interface BuyLimitService {

    /**
     * @author : zhukang
     * @date : 2021-06-19
     * @return :
     * @description : 初始化商品库存到redis
     */
    boolean initProdStockToRedis(String prodId);

    /**
     * @author : zhukang
     * @date : 2021-06-19
     * @return :
     * @description : 锁定抢购用户
     */
    boolean lockBuyUser(String userId, String prodId);

    /**
     * @author : zhukang
     * @date : 2021-06-19
     * @return :
     * @description : 校验商品库存
     */
    boolean checkProdStock(String prodId, Integer buyCount);

    /**
     * @author : zhukang
     * @date : 2021-06-19
     * @return :
     * @description : 校验库存是否锁定
     */
    boolean isStockLock(String prodId);

    /**
     * @author : zhukang
     * @date : 2021-06-19
     * @return :
     * @description : 将订单号存入redis
     */
    void setTradeOrderNo2Redis(String userId, String tradeOrderNo);

    /**
     * @author : zhukang
     * @date : 2021-06-19
     * @return :
     * @description : 校验订单是否生成成功
     */
    boolean isTradeOrderCreated(String tradeOrderNo);

    /**
     * @author : zhukang
     * @date : 2021-06-19
     * @return :
     * @description : 减库存
     */
    void subProdStockNum(String prodId, Integer buyCount);

    /**
     * @author : zhukang
     * @date : 2021-06-19
     * @return :
     * @description : 释放库存锁
     */
    void unlockProdStockLock(String prodId);
}
